// 引入 Winston 相关依赖
import { transports, createLogger, format } from 'winston';

// 配置 Winston 日志选项
export const winstonConfig = {
  transports: [
    // 控制台传输方式，用于在控制台输出日志信息
    new transports.Console({
      level: 'info', // 控制台日志级别，这里设置为 info
      format: format.combine(
        format.colorize(), // 让日志在控制台上具有彩色输出
        format.timestamp(), // 添加时间戳
        format.printf(({ timestamp, level, message }) => {
          return `${timestamp} [${level}]: ${message}`;
        }), // 格式化日志消息
      ),
    }),
    // 文件传输方式，用于将日志信息记录到文件中
    new transports.File({
      level: 'info', // 文件日志级别，这里设置为 info
      filename: 'logs/app.log', // 日志文件名，将日志记录到 app.log 文件中
      format: format.combine(
        format.timestamp(), // 添加时间戳
        format.printf(({ timestamp, level, message }) => {
          return `${timestamp} [${level}]: ${message}`;
        }), // 格式化日志消息
      ),
    }),
  ],
};

// 创建 Winston 日志记录器，基于上述配置
const logger = createLogger(winstonConfig);

// 导出创建的日志记录器
export default logger;
